iT邦幫忙

2023 iThome 鐵人賽

DAY 5
0
自我挑戰組

轉職仔自學Java筆記本系列 第 5

整數 (Integer) 與浮點數 (Floating point)

  • 分享至 

  • xImage
  •  

今天來分享一下 Java 中 8 種原始資料型別(Primitive Data Types),這 8 種資料型別可以分成以下四組:

  1. 整數類:byteshortintlong
  2. 浮點數類:floatdouble
  3. 布林值:boolean
  4. 單字:char

整數類 Integer types

整數類的資料型別有 byteshortintlong 四種,彼此的差異在於佔用的記憶體位置大小不一樣,各自可以儲存不同大小的數值資料。

要理解彼此的大小關係,要先知道記憶體最小的計量單位為 1 Bit (位元) 且是以二進位儲存資料,1 Bit 代表二進位中的一位,可以儲存一個 1 或 0 的數值;但若需要表示數值 2 的話,就需要進位用 2 Bits 表示成 10,每一次的進位都可以想表示的數值數量都會變成兩倍,因此,可以推導出儲存的數值可以 2 的 n 次方來表示,n 為位元數。

https://ithelp.ithome.com.tw/upload/images/20230920/20162254COouMmM63K.png

而 一個byte 被定義為 8 bit,理論上可以儲存 2 的 8 次方 (256)大小的數字,但若考慮正負數的情況,其中一個位元需要拿來表示正負號,那還有7個位元應該可以存放正負128 (2的7次方)是嗎?

不是喔,還有 0 的存在且被歸屬在正數,所以會佔用正數的一個位置,故實際能儲存的數值範圍為 -128 至 127 ,可以發現到正數少了 1,。

那這裡我們推導出一個 byte 可以存放的數值範圍為:
https://ithelp.ithome.com.tw/upload/images/20230920/20162254rT9p5WeBjM.png
其中,n 為擁有的位元數(bit),而正數的減一是因為 0 屬於正數。

接著,我們那就可以推算出其他整數類別可以存放的數值範圍,如下表:

資料型別 儲存大小 數值範圍
byte 1 byte -128 ~ 127
short 2 byte -32,768 ~32767
int 4 byte -2,147,483,648 ~ 2,147,483,647
long 8 byte -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807

選擇適當的整數資料類別,有助於管理記憶體的使用量,寫出更具效能的程式碼。
我自己使用的小心法是去記憶: 3 萬以內用 short, 會超過 21 億用 long,其他都用 int。

但需留意在使用 long 的時候,需要於數值結尾加上 “L” 。

    // int
    int myInt = 100000;

    // long
    long myLong = 20000000000L; // 加上 "L"
    

浮點數類 Floating point types

浮點數類有 float 與 double 兩類,主要差異在於佔用的儲存體大小以及小數位數的精準度

資料型別 儲存大小 數值範圍
float 4 byte 精準度可達小數點下 6-7 位
double 8 byte 精準度可達小數點下 15 位

float 與 double 在指派值的時候,與 long 一樣要在數值結尾加上資料型別標記,float 為 "f" 而 double 為 "d"。


// float
float myNum = 3.21f; // 加上 "f"

// double
double myNum = 10.1592d; // 加上 "d"


上一篇
Primitive 與 Non-Primitive Data Types 的比較
下一篇
布林值 (Boolean) 與字符 (Characters)
系列文
轉職仔自學Java筆記本22
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言